import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
import app from './modules/app'
import settings from './modules/settings'
import user from './modules/user'

Vue.use(Vuex)// 给Vue原型上添加$store属性

const store = new Vuex.Store({ // new一个唯一的store仓库对象
  /**
   * state：{
   *  属性名：初始值
   * }，
   * mutations：{
   *  （同步）唯一修改state的地方
   * }，
   * actions：{
   *  （异步）放的是异步代码然后提交给mutations来影响state
   * }，
   * getters：{
   *  依赖state的值，定义计算属性并返回值使用
   * }，
   * modules：{
   *  分模块（每个模块对象里还有这5个核心概念，分散管理）
   * }
   */
  modules: {
    app,
    settings,
    user
  },
  getters
})

export default store
